package com.lzn.dds.dataSource;

import com.alibaba.druid.pool.DruidDataSource;

/**
 * 动态数据源定时器管理，长时间无法访问的数据库连接关闭
 * @author lzn
 * @date 6/8/21 7:45 PM
 */
public class DDSTimer {
    // 空闲时间周期，超过这个时间数据库连接被释放，默认十分钟
    private static long idlePeriodTime = 5*60*1000;
    // 动态数据源
    private DruidDataSource dds;
    // 上一次访问时间
    private long lastUserTime;
    public DDSTimer(DruidDataSource dds){
        this.dds = dds;
        this.lastUserTime = System.currentTimeMillis();
    }
    public void refreshTime(){
        lastUserTime =System.currentTimeMillis();
    }
    public boolean checkAndClose(){
        System.out.println("定时关闭数据库开始");
        if(System.currentTimeMillis()-lastUserTime>idlePeriodTime){
            dds.close();
            System.out.println("定时关闭数据库结束");
            return true;
        }
        return false;
    }
    public DruidDataSource getDds(){
        return dds;
    }
}
